package com.imooc.pay.config;

import com.lly835.bestpay.config.AliPayConfig;
import com.lly835.bestpay.config.WxPayConfig;
import com.lly835.bestpay.service.BestPayService;
import com.lly835.bestpay.service.impl.BestPayServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * 将BestPayService抽取为公共部分
 */
@Component
public class BestPayConfig {


    @Autowired
    WxAccountConfig wxAccountConfig;

    @Autowired
    AlipayAccountConfig alipayAccountConfig;

    @Bean //项目启动即可执行该方法
    public BestPayService bestPayService(WxPayConfig wxPayConfig) {
        //设置配置
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();

        //支付宝配置
        AliPayConfig aliPayConfig = new AliPayConfig();
        aliPayConfig.setAppId(alipayAccountConfig.getAppId());
        aliPayConfig.setPrivateKey(alipayAccountConfig.getPrivateKey());
        aliPayConfig.setAliPayPublicKey(alipayAccountConfig.getPublicKey());
        aliPayConfig.setReturnUrl(alipayAccountConfig.getReturnUrl());//支付之后支付宝跳转的地址
        aliPayConfig.setNotifyUrl(alipayAccountConfig.getNotifyUrl());

        bestPayService.setWxPayConfig(wxPayConfig);
        bestPayService.setAliPayConfig(aliPayConfig);
        return bestPayService;
    }


    @Bean
    public WxPayConfig wxPayConfig(){
        //微信支付配置
        WxPayConfig wxPayConfig = new WxPayConfig();
        wxPayConfig.setAppId(wxAccountConfig.getAppId());          //公众号Id
       /* wxPayConfig.setMiniAppId("xxxxx");      //小程序Id
        wxPayConfig.setAppAppId("xxxxx");       //移动AppId*/
        //支付商户资料
        wxPayConfig.setMchId(wxAccountConfig.getMchId());         //商户id
        wxPayConfig.setMchKey(wxAccountConfig.getMchKey());      //商户密钥
        //支付成功后微信异步通知，post请求调用/pay/notify接口
        //只有return_code跟result_code都返回success时，才算支付成功
        wxPayConfig.setNotifyUrl(wxAccountConfig.getNotifyUrl());
        wxPayConfig.setReturnUrl(wxAccountConfig.getReturnUrl());
        return wxPayConfig;
    }

}
